/**
 * 封装 axios 请求模块
 */
import axios from "axios";
import store from "@/store";

// 遇到问题：后端返回的超大数字无法在JS中精确表示
// 解决方案：借助 json-bigint 将超大数字转成字符串即可
// import bigint from "json-bigint";
// const JSONBig = bigint({ storeAsString: true }); // 通过该配置，让超大数字转为字符串

const request = axios.create({
  // 配置请求的根路径
  baseURL: "http://localhost:8000/",

  // 自定义后端返回的原始数据
  // transformResponse: [function (data) {
  //   // axios 默认会在内部这样处理后端返回的数据
  //   // return JSON.parse(data)

  //   try {
  //     return JSONBig.parse(data)
  //   } catch(err) {
  //     return data
  //   }
  // }]
});

// 配置请求拦截器
request.interceptors.request.use(
  function(config) {
    // Do something before request is sent
    // config ：本次请求的配置对象
    // config 里面有一个属性：headers
    const { user } = store.state;
    if (user && user.token) {
      config.headers.Authorization = `Bearer ${user.token}`;
    }
    return config;
  },
  function(error) {
    // Do something with request error
    return Promise.reject(error);
  }
);

export default request;
